#ifndef EXPRESSIONDRAWER_H_
#define EXPRESSIONDRAWER_H_

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glx.h>
#include <vector>
#include "ExpressionMesh.h"
#include "../xpression-model/Expression.h"
#include "../xpression-model/Variable.h"
#include "../xpression-model/Decimal.h"
#include "../xpression-model/Model.h"
#include "../xpression-model/Sin.h"
#include "math.h"


class ExpressionDrawer {

public:
	ExpressionDrawer(int *argc, char** argv, int window_width, int window_height);
	virtual ~ExpressionDrawer();
	int InitOpenGL();
	void MainLoop();
	void AddMesh(ExpressionMesh* mesh);
	static GLvoid DrawGLScene();
	static GLvoid ReSizeGLScene(int width, int height);
	static GLvoid SpecialKeyboardInput(int key, int x, int y);
	static GLvoid KeyboardInput(unsigned char key, int x, int y);
	static GLvoid MouseMotion(int x, int y);

private:
	void GLSetup();

};

#endif /* EXPRESSIONDRAWER_H_ */
